package com.cell.api.web.configure;


import com.cell.api.web.constants.WebCommonConstants;
import com.cell.cloud.annotation.EnableCellCloudLock;
import com.cell.cloud.annotation.EnableCellCloudUidGenerator;
import com.cell.evaluator.annotation.EnableCellEvaluator;
import com.cell.mybatis.annotation.EnableCellMybatis;
import com.cell.mybatis.mapper.annotation.GlobalKeyGeneration;
import com.cell.redis.annotation.EnableCellRedis;
import com.cell.web.annotation.EnableNoRepeatSubmit;
import com.cell.word.annotation.EnableCellWord;
import com.cell.zero.file.storage.annotation.EnableCellZeroFileStorage;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;

import javax.persistence.GenerationType;
import java.lang.annotation.*;

/**
 * <p>
 * </p>
 *
 * @description TODO
 * @author: zdy
 * @create: 2020-10-27 21:43
 **/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@ComponentScan(WebCommonConstants.SCAN_PACKAGE_PATH)
@EnableCellMybatis(
        typeAliasesPackages = {WebCommonConstants.ENTITY_PACKAGE_PATH},
        value = {WebCommonConstants.REPOSITORY_PACKAGE_PATH},
        configLocation = WebCommonConstants.MYBATIS_CONFIG_FILE)
@GlobalKeyGeneration(numberKeyStrategy = GenerationType.TABLE)  //全局表生成id方式
@EnableCellCloudUidGenerator     //分布式id处理器
@EnableCellCloudLock             //分布式锁
@EnableCellRedis                 //启动redis，一般要启动，框架缓存依赖
@EnableCellZeroFileStorage               //文件存储，一般需要，提供文件上传与使用的接口，一般均需要，除非项目不使用附件
@EnableNoRepeatSubmit                      //防重复提交，不需要可去掉(配置指定的控制器上的api配置才生效，不会拦截所有url)
@EnableCaching                              //启用缓存spring boot 自带，框架引会引用缓存组件。
//不使用表达式解析，一下两个可删除
@EnableCellEvaluator                   //表达式解析，打印解析、工作流解析，任何需要解析的地方或使用，不需要可去掉
@EnableCellWord                        //提供 Word 解析 依赖 EnableAutumnEvaluator，不需要启去掉
public @interface EnableApiWebStartup {

}
